package com.bayleaf.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {
    /**
     * 스트링 분리
     * @param str
     * @return
     */
    public static String[] strTokenizer(String str){
    	return str.split(System.getProperty( "line.separator" ));
    }
    
    /**
     * 카멜케이스 형식의 스트링을 언더바 구분으로 바꿈 
     * @param camelCaseStr
     * @return underScoreResult
     */
    public static String camelCaseToUnderScore(String camelCaseStr){
    	
    	char ch;
    	StringBuilder result= new StringBuilder();
    	
    	for(int i=0; i < camelCaseStr.length(); i++){
    		if(Character.isUpperCase(ch = camelCaseStr.charAt(i))){
    			result.append(("_"+ch).toUpperCase());
    		}else{
    			result.append(Character.toString(ch).toUpperCase());
    		}
    	}
    	return result.toString();
    }
    
    /**
     * 언더바 형식의 스트링을 카멜케이스로 바꿈
     * @param underScore
     * @return camelCaseResult
     */
    public static String underScoreToCamelCase(String underScore){
    	
    	char ch;
    	StringBuilder result= new StringBuilder();
    	
    	for(int i=0; i < underScore.length(); i++){
    		if('_'==(ch = underScore.charAt(i))){
    			result.append(Character.toString(underScore.charAt(++i)).toUpperCase());
    		}else{
    			result.append(Character.toString(ch).toLowerCase());
    		}
    	}
    	return result.toString();
    }
    
	/**
	 * 정규식으로 스트링의 값을 찾음
	 * @param regex
	 * @param input
	 * @return matcher
	 */
	public static Matcher regexFind(String regex, String input) {
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(new StringBuilder(input));
		return matcher;
	}
}
